﻿#include<iostream>
using namespace std;
#define ADD(a,b) a+b
#define MYCOMPAIRE(a,b) a<b?a:b
#include "qfmath.h"		// 包含用户自己定义的头文件，只能使用双引号，不能使用尖括号
//void test01() {
//	int a = 10;
//	//引用一旦初始化之后不能改变引用的标识
//	int& b = a;
//	b = 100;
//	cout << a << endl;
//	//b=c;代表把c的值付给b，不是给c取别名
//}
////建立对数组的引用
//void test02() {
//	int a[3] = { 1,2,3 };
//	int(&arr)[3] = a;
//	/*typedef int Arr[3];
//	Arr &arr = a;*/
//	for (int i = 0; i < 3; i++)
//	{
//		cout << arr[i] << endl;
//	}
//}
////对函数的引用
//
////传指针
//void swap(int* a, int* b) {
//	int temp = *a;
//	*a = *b;
//	*b = temp;
//}
////传引用
////int &x=a,int &y=b;
//void swap_ref(int& x, int& y) {
//	int temp = x;
//	x = y;
//	y = temp;
//}
//void test_ref() {
//	int a = 10;
//	int b = 20;
//	//swap(&a, &b);
//	swap_ref(a, b);
//	cout << a << "--" << b << endl;
//}
//
////传指针，当参数是指针时
//void get_mem(int** q) {
//	**q =20;
//}
////源类型 & 别名=源变量
////int* & q=p
//void get_mem_ref(int* & q) {
//	*q = 50;
//}
//void test03() {
//	int a = 10;
//	int* p = &a;
//	get_mem(&p);
//	cout << a << endl;
//	get_mem_ref(p);
//	cout << a << endl;
//}
//
//
////函数引用
//int test04() {
//	int a = 5;
//	return a;
//}
//int& test05() {
//	//int a = 5;//不能返回局部变量的引用,函数执行完，变量会释放；
//	static int a = 5;//可以返回静态变量的引用
//	return a;
//}

//int add01(int a,int b) {
//
//	return a + b;
//}
//inline int add02(int a, int b) {
//
//	return a + b;
//}
//inline int compaire(int a, int b) {
//
//	return a<b?a:b;
//}
//int sss(int a = 10, int b) {
//	return a + b;
//}
//
//int main() {
//	//test03();
//	int a = 1;
//	int b = 3;
//
//	sss(a, b);
//	//cout<<ADD(5, 6) * 5<<endl;//预处理宏，替换发生在预处理阶段
//	//cout << add02(5, 6) * 5 << endl; //替换发生在编译阶段;自动加上括号。也和宏函数益阳不会有函数调用的开销。
//
//	//int ss1 = MYCOMPAIRE(++a, b);//(++a)<b?(++a)
//	//int ss2 = compaire(++a, b);//(++a)<b?(++a)
//	//cout << ss1 << endl;
//	//cout << ss2 << endl;
//	///*cout << test04() << endl;
//	//cout << test05() << endl;
//	//test05()=100;
//	//cout << test05() << endl;*/
//	////test_ref();
//	return 0;
//}



int main() {
	// 此时可以直接使用qfmath.h中定义的方法，实现部分写在了qfmath.cpp文件中
	cout << abs(-10) << endl;
	cout << add(10, 20) << endl;
	// 由于qfmath.h中并没有定义test方法，因此无法在这里调用test方法
	
	return 0;
}